﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Renci.Data.Interop.OpenGIS.Gml_32
{
    /// <remarks/>
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(BezierType))]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.opengis.net/gml/3.2")]
    [System.Xml.Serialization.XmlRootAttribute("BSpline", Namespace = "http://www.opengis.net/gml/3.2", IsNullable = false)]
    public class BSplineType : AbstractCurveSegmentType
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="BSplineType"/> class.
        /// </summary>
        public BSplineType()
        {
            this.Interpolation = CurveInterpolationType.polynomialSpline;
        }

        private System.Collections.ObjectModel.Collection<object> _items = new System.Collections.ObjectModel.Collection<object>();
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("coordinates", typeof(CoordinatesType))]
        [System.Xml.Serialization.XmlElementAttribute("pointProperty", typeof(PointPropertyType))]
        [System.Xml.Serialization.XmlElementAttribute("pointRep", typeof(PointRepType))]
        [System.Xml.Serialization.XmlElementAttribute("pos", typeof(DirectPositionType))]
        [System.Xml.Serialization.XmlElementAttribute("posList", typeof(DirectPositionListType))]
        public System.Collections.ObjectModel.Collection<object> Items { get { return this._items; } }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("degree", DataType = "nonNegativeInteger")]
        public string Degree { get; set; }

        private System.Collections.ObjectModel.Collection<KnotPropertyType> _knots = new System.Collections.ObjectModel.Collection<KnotPropertyType>();
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("knot")]
        public System.Collections.ObjectModel.Collection<KnotPropertyType> Knots { get { return this._knots; } }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("interpolation")]
        [System.ComponentModel.DefaultValueAttribute(CurveInterpolationType.polynomialSpline)]
        public CurveInterpolationType Interpolation { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("isPolynomial")]
        public bool IsPolynomial { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsPolynomialSpecified { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("knotType")]
        public KnotTypesType KnotType { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool KnotTypeSpecified { get; set; }
    }
}
